Computer systems generally are sold with a specific number of base components. These base components typically include a host processor, a graphics subsystem, a display system and one or more external devices such as a disk drive. The base graphics subsystem of the computer system typically includes a graphics processor which may be dedicated to rendering picture element (pixel) data that is to be displayed on a display screen. The pixel data that is displayed on the display screen is stored in a frame buffer memory of the base graphics system in a digital pixel format. During operation, the contents of the frame buffer memory repeatedly are read out of the frame buffer and fed to a Random Access Memory Digital-to-Analog Converter (RAMDAC), which converts the digital pixel data into analog representations of the colors red, green and blue for display on a graphics device. The contents of the frame buffer are modified by the graphics processor to change images that are projected on the display screen.
Many applications may be executing at a given time on the computer system. Associated with each different application may be a unique window that displays the operative state of the application. For example, a given workstation may be executing a word processing application at the same time that it is executing a spreadsheet application, and each application will have associated therewith a different display window. As the user of the graphics workstation switches from application to application, the window associated with that application is displayed on top of the other displayed windows on the screen. Windows that are obscured by the top window may not save the pixel data that is hidden.
The base graphic system sold with the computer system usually provides certain basic graphics capabilities that allow an application to provide a general purpose display of two-dimensional objects. When a higher level of graphics capability is desired, for example, for executing applications that display high speed three dimensional images (such as those provided computer games flight simulators and the like), the user either must upgrade the graphics capabilities of his/her computer system by adding an additional high performance graphic device or, alternatively, must use software emulation techniques to provide the desired display.
There are a number of methods that are used to interface an additional high performance graphics device to an imaging system. One method is to directly connect the external graphics device to an external monitor. Another method that is commonly used to enable pixel data from two different graphics devices to be rendered on a common display is known as chroma keying. During chroma keying, pixel data from both of the frame buffers are forwarded as inputs to a multiplexer that is positioned after the respective RAMDACs. One color is selected as the "chroma key" and is used to control the select line of the multiplexer. When a pixel of the chroma key color is forwarded from the base graphics system, the multiplexer is switched to propagate data from the high performance graphics device in order to allow the high performance graphics device to provide a graphical display on the display screen. Similarly, when a pixel of the chroma color is forwarded from the high performance graphics system, the multiplexer is switched to propagate pixel data from the base graphics system, to allow the base graphics system to provide a graphical display on the display screen.
Although chroma keying is an effective technique for allowing windows generated by two different graphics devices to be displayed on a common display, the use of chroma keying introduces several drawbacks. One drawback is that the color value that is used as the chroma key is unavailable for use as a display color. A second drawback is that there are visual artifacts that are introduced during the transition from pixel data provided from the first frame buffer to the pixel data provided from the second frame buffer. Because the display screen may simultaneously display pixel data from two different frame buffers during the transition between frame buffers, visual artifacts that may blur an image are introduced. In addition, because separate frame buffers are included in each of the graphic devices, there is an increase in cost associated with the high performance graphics device.
Accordingly, it would be desirable to provide a technique for seamlessly integrating various windowing systems into a base graphics system without incurring visual artifacts, losing available colors, and increasing the cost of the overall system.